Kaleida Labs

Kaleida Labs was one of several joint ventures between Apple Computer and IBM in a period of alliance between the two companies during the early 1990s. The two computer giants sought to counter the influence of Microsoft and the growing dominance of its Windows operating system. Other ventures between Apple and IBM in this period included the Taligent operating system, and the PowerPC reference platform, a hardware chip alliance that included Motorola.

Contents

History

Announced in 1991, the company began operations early in 1992 with Nat Goldhaber serving as its first CEO. The company’s objective was the development of a common multimedia platform, the Kaleida Media Player, that would run on both Windows and Macintosh computers. The Kaleida Media Player was the runtime environment for the company’s main product known as ScriptX, a programming language and object library for authoring multimedia content. In its early days, Kaleida had several other projects underway, including a proposed operating system for television set-top boxes that was to be based around the Kaleida Media Player software.

Following the departure of Goldhaber in 1993, Mike Braun of IBM became CEO of Kaleida Labs, and the company’s focus was narrowed. Kaleida’s mission from then on was to complete and support the ScriptX language and multimedia object library. Kaleida sought to bundle the Kaleida Media Player as system software with new personal computers. At the same time, CD-ROM developers could ship the Kaleida Media Player with content to support existing Windows and Macintosh systems.

In late 1993 and early 1994, the company’s objective was for the Kaleida Media Player to run on a reference platform consisting of either a 25 MHz Motorola 68030 or a 25 MHz Intel 80486 processor running with 4 MB of random access memory. Such a system was typical of the installed base at that time, and most new computers were shipping with a read-only CD-ROM drive. Toshiba, which had supported Kaleida’s set-top box effort, became a minority stakeholder. Throughout its brief history, Kaleida maintained cross-platform development efforts for Windows (both Windows 3.1 and Windows 95), the Macintosh (supporting both the 68000 and PowerPC platforms), and OS/2.

Kaleida's corporate offices were located in Mountain View, California, at sites near the Shoreline Amphitheater on the east side of U.S. 101. Kaleida was one of the earliest companies to post a corporate website. Registration of its domain kaleida.com has since lapsed and the Internet domain has since been used by another company.

ScriptX

ScriptX was an object oriented scripting language, influenced heavily by Smalltalk and LISP. With Smalltalk, it shared the concept of classes, objects, and inheritance. Like Smalltalk, it was a pure implementation of an object environment, one where everything was an object. ScriptX had no primitive data types – even integers were defined as objects. All objects were instances of a class, and classes themselves were objects, instances of a MetaClass. In contrast with early forms of Smalltalk, ScriptX implemented multiple inheritance in both classes and objects, and dynamic binding of objects at runtime.

The principal software architect of ScriptX was John Wainwright, an Australian-born computer scientist. In the ScriptX language, as in LISP, there were no statements. Every line in a ScriptX program was an expression that returned a value, and a ScriptX program comprised a list of expressions. Syntactically, ScriptX was most similar to C, although it was not a compiled language. ScriptX was implemented not in C++, but rather in C itself, using an extensive library called Objects in C that Wainwright had developed before joining Kaleida, and sold to Kaleida at the company’s inception. Objects in C used preprocessor directives to simulate an object system, but the company’s development environment was not itself an object-oriented system.

Another feature that ScriptX shared with LISP was the use of a garbage collector for memory management. Rather than requiring the explicit allocation and deallocation of memory, the ScriptX garbage collector ran independently in a background thread, rearranging objects in memory while removing objects that were no longer needed. ScriptX objects were stored in an underlying database called an object store, and the garbage collector functioned by tracing references within a program to objects in memory, eliminating those that were no longer referenced.

In addition to the ScriptX language, the Kaleida development platform offered an extensive class library of more than 240 classes, many of them designed to support multimedia as well as create customized user interfaces. Within the ScriptX environment, features that would be implemented as data types or supplied as part of external function packages in many other languages were defined as classes. For example, common data structures such as arrays and linked lists were implemented as collection classes. ScriptX supported multi-threading but not multiprocessing, and offered scripting control of lower level operating system features such as events and concurrently running threads. Early multimedia development tools lacked techniques for synchronizing presentations, except by polling the operating system's own clock. Ray Valdés, writing in Dr. Dobbs Journal, noted that, "a key ScriptX feature is a Clock class, which provides facilities for synchronizing timed sequences of actions required by multimedia apps."

Following the closure of Kaleida Labs, Wainwright went on to serve as the principal architect of MaxScript, a scripting language for 3D Studio Max that has been used to process content for gaming and 3D applications such as the Maxis Sims programs (see Automating The Sims Character Animation Pipeline with MaxScript). Thus, ScriptX can be considered a progenitor of MaxScript, which closely resembles ScriptX.

Java and the Internet

Although computer and software companies were early users of the Internet and the World Wide Web (WWW), most companies in the early 1990s did not anticipate its rapid adoption by consumers. Outside of universities and the computer industry, very few companies or individuals had access to high-speed, broadband networks. Kaleida had been founded partly as an authoring environment for applications based on CD-ROMS. But the product life cycle of CD-ROMs, which had been heralded for years as a content delivery system, turned out to be surprisingly short.

By 1995 it was clear that CD-ROMs for content delivery in applications would soon give way to delivery over a high-speed network. In early 1995, Kaleida Labs demonstrated the ability of ScriptX to support distributed objects over the Internet, and to serve dynamically generated web content (see ScriptX and the World Wide Web: Link Globally, Interact Locally). By late 1995, however, the directors of Kaleida realized that the direction of multimedia development had shifted, and that Sun Microsystems’s Java language was better positioned than ScriptX to take advantage of the Internet.

Java has many similarities with ScriptX. Like ScriptX, it is an object based language with elements of syntax that are similar to C and C++. Java classes support a limited form of multiple inheritance through interfaces, and the Java runtime environment utilizes a garbage collector for memory management with a "tracing" architecture similar to that of ScriptX. Both Java and ScriptX translate programs into a platform-independent bytecode.

Unlike ScriptX, Java is not a pure object system, and has primitive data types. In contrast with ScriptX expressions, Java programs are always written inside a class definition, and return either a value or void. This makes Java code much easier to secure, to protect from tampering and malicious interference. Java was able from the beginning to support multi-processing as well as multi-threaded applications, and thus was naturally scalable. These features, and other attributes of Java, made it more suitable for a distributed and networking environment than ScriptX.

Although both ScriptX and Java were designed as platform independent virtual machine environments, their philosophy and implementation were quite different. The Kaleida Media Player was a complex interpreter that required several megabytes to run, and Kaleida never achieved effective performance on a system with less than 16 MB of random access memory. By contrast, Java was designed to run compiled bytecode on a stripped down virtual machine that could be implemented on virtually any 16-bit or larger processor. In this way, Java could be used anywhere from handheld devices or consumer appliances to mainframe computers.

In 1995, Java was being demonstrated mostly as a runtime environment for small applets, as code that could be embedded in web pages and downloaded to run in the browser. Sun Microsystems provided detailed specifications for Java, released many classes in open source, and aggressively formed alliances to distribute it and share its development with other companies throughout the computer hardware and software industries.

Closure

At the time of its formation, Kaleida’s ScriptX was envisioned as an authoring platform for CD-ROMs, and later for DVDs, which would hold much more information. The Kaleida Media Player was to be a runtime environment that would allow presentations, games, educational software, kiosks, and many other kinds of entertainment to run on multiple platforms. By fostering its development, Apple and IBM sought to maintain their own position in the software development arena at a time when Microsoft’s power was rising.

Kaleida Labs and its parent companies had always envisioned the Kaleida Media Player as a proprietary and closed-source operating system, one designed for a more limited market than Java. After Netscape's public offering early in 1995, many software developers recognized that the browser itself would pose a challenge to Windows, and that the browser would become a multimedia platform in its own right. By late 1995 it was clear that ScriptX had lost its momentum in the market, even though the company was on the verge of shipping ScriptX Version 1.5. In November 1995, Apple Computer and IBM announced the closure of Kaleida Labs, effective in January 1996. In effect, the Netscape browser had taken on the functions that were intended for the Kaleida Media Player, while Java was seen to have taken on the role that was intended for ScriptX (although JavaScript eventually succeeded where Java failed as a client side scripting language).

Kaleida had already shipped Version 1.0 of ScriptX early in 1995, and a few development efforts were underway. However, most potential developers had been taking a wait-and-watch approach to the Kaleida Media Player, waiting for Kaleida to solve performance problems and ship a more stable version of ScriptX. Closure of Kaleida Labs was scheduled for early 1996, but the parent companies announced that they would ship ScriptX 1.5 anyhow. Future development of ScriptX would move to a group inside Apple Computer, and Apple offered jobs to most members of the ScriptX engineering team.

ScriptX Version 1.5 shipped almost concurrently with the closure of Kaleida Labs. By shipping ScriptX, Apple and IBM met contractual commitments they had made to developers and avoided legal difficulties. Within a few months, development of ScriptX withered away inside Apple, and the remaining employees had either migrated to other jobs at Apple, or had left for other companies in the industry. Ultimately, only two multimedia content projects ever shipped using ScriptX 1.5. One was a CD-ROM version of the Swedish National Encyclopedia, Nationalencyklopedin, developed by Linné Data of Gothenburg, Sweden. The other was an interactive music title, Robert Winter's Crazy for Ragtime.

References

External links